﻿/*
 ***************************************************************************
 * Microsoft Visual C# .NET
 * 名称：       Shpm.App.Master.Dao.MonthlyDutyScheduleDao
 * 类型：       月度工作排班维护画面 数据库操作层
 * 功能说明：   月度工作排班计划做追加更新删除操作
 * 作者：       章 昕
 * 创建日期：   2007/11/15
 * 修改日期     修改者      修改内容
 * 
 * 
 * ---
 ***************************************************************************
*/
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections;
using Shpm.System.Db;
using Shpm.App.Commons.Db.Beans.Master;
using Shpm.App.Master.Bean;


/// <summary>
/// Summary description for MonthlyDutyScheduleDao
/// </summary>
namespace Shpm.App.Master.Dao
{
    public class MonthlyDutyScheduleDao : ShpmBaseDao
    {
        public MonthlyDutyScheduleDao() { }

        // 从数据字典中取得画面列表项内容
        public const string FIND_BY_CATALOG = "CommonDictionary.FindByCatalog";

        // 排班 list
        public const string LIST_DUTY_SCHEDULE = "MonthlyDutySchedule.ListDutySchedule";

        // 排班 list
        public const string LIST_DUTY_SCHEDULE_NONAME = "MonthlyDutySchedule.ListDutyScheduleNoName";

        // 排班 find
        public const string FIND_DUTY_SCHEDULE = "MonthlyDutySchedule.FindDutySchedule";

        // 排班 insert
        public const string INSERT_DUTY_SCHEDULE = "MonthlyDutySchedule.InsertDutySchedule";

        // 排班 update
        public const string UPDATE_DUTY_SCHEDULE = "MonthlyDutySchedule.UpdateDutySchedule";

        // 排班 delete
        public const string DELETE_DUTY_SCHEDULE = "MonthlyDutySchedule.DeleteDutySchedule";


        // 排班项目详细 list
        public const string LIST_DUTY_SCHEDULE_ITEMS = "MonthlyDutySchedule.ListDutyScheduleItems";

        // 排班项目详细 find
        public const string FIND_DUTY_SCHEDULE_ITEM = "MonthlyDutySchedule.FindDutyScheduleItem";

        // 排班项目详细 insert
        public const string INSERT_DUTY_SCHEDULE_ITEM = "MonthlyDutySchedule.InsertDutyScheduleItem";

        // 排班项目详细 update
        public const string UPDATE_DUTY_SCHEDULE_ITEM = "MonthlyDutySchedule.UpdateDutyScheduleItem";

        // 排班项目详细 delete
        public const string DELETE_DUTY_SCHEDULE_ITEM = "MonthlyDutySchedule.DeleteDutyScheduleItem";

        // 排班项目详细 delete all
        public const string DELETE_DUTY_SCHEDULE_ITEM_ALL = "MonthlyDutySchedule.DeleteDutyScheduleItemAll";

        // 排班项目详细 find
        public const string FIND_ITEM_EMPDAY_ISEXIST = "MonthlyDutySchedule.FindItemEmpDayIsExist";


        // 当月排班下的所有人员列表 list
        public const string LIST_DUTY_SCHEDULE_EMPS = "MonthlyDutySchedule.ListDutyScheduleEmps";

        // 当月排班下某一指定人员的工作计划 list
        public const string LIST_DUTY_EMPS_DAYS = "MonthlyDutySchedule.ListDutyEmpsDays";

        // check指定人员是否在其他工作计划中已经存在
        public const string CHECK_EMP_IN_OTHER_SCHEDULE = "MonthlyDutySchedule.CheckEmpInOtherSchedule";


        // 根据日期检索当月排班下某一指定人员的工作计划 list
        public const string LIST_DUTY_EMPS_DAYS2 = "MonthlyDutySchedule.ListDutyEmpsDays2";

        /*
        *名称： FindByCatalog
        *功能： 取得数据字典列表对象。
        *参数： paramBean - 检索参数
        *返回： 数据字典列表 
        *说明： 从数据字典中取得画面列表项内容
       */
        public IList FindByCatalog(CommonDictionaryBean paramBean)
        {
            return base.QueryForList(FIND_BY_CATALOG, paramBean);
        }

        public IList ListDutySchedule(MonthlyDutyScheduleBean paramBean)
        {
            return base.QueryForList(LIST_DUTY_SCHEDULE, paramBean);
        }

        public IList ListDutyScheduleNoName(MonthlyDutyScheduleBean paramBean)
        {
            return base.QueryForList(LIST_DUTY_SCHEDULE_NONAME, paramBean);
        }        

        public MonthlyDutyScheduleBean FindDutySchedule(MonthlyDutyScheduleBean paramBean)
        {
            return (MonthlyDutyScheduleBean)base.QueryForObject(FIND_DUTY_SCHEDULE, paramBean);
        }

        /*
         *名称： Insert
         *功能： 登录排班对象。
         *参数： paramBean - 登录对象
         *返回： 登录的对象
         *说明： 排班 insert 
        */
        public MonthlyDutyScheduleBean Insert(MonthlyDutyScheduleBean paramBean)
        {
            paramBean.DutyScheduleId = (int)base.Insert(INSERT_DUTY_SCHEDULE, paramBean);
            return paramBean;
        }

        /*
         *名称： Update
         *功能： 更新排班对象。
         *参数： paramBean - 更新对象
         *返回： 更新记录数
         *说明： 排班 update 
        */
        public int Update(MonthlyDutyScheduleBean paramBean)
        {
            return base.Update(UPDATE_DUTY_SCHEDULE, paramBean);
        }

        /*
         *名称： Delete
         *功能： 删除排班对象。
         *参数： paramBean - 删除对象
         *返回： 删除记录数
         *说明： 排班 delete 
        */
        public int Delete(MonthlyDutyScheduleBean paramBean)
        {
            return base.Delete(DELETE_DUTY_SCHEDULE, paramBean);
        }


        public IList ListDutyScheduleItems(MonthlyDutyScheduleBean paramBean)
        {
            return base.QueryForList(LIST_DUTY_SCHEDULE_ITEMS, paramBean);
        }


        public MonthlyDutyScheduleBean FindDutyScheduleItem(MonthlyDutyScheduleBean paramBean)
        {
            return (MonthlyDutyScheduleBean)base.QueryForObject(FIND_DUTY_SCHEDULE_ITEM, paramBean);
        }

        /*
         *名称： Insert
         *功能： 登录排班项目详细对象。
         *参数： paramBean - 登录对象
         *返回： 登录的对象
         *说明： 排班项目详细 insert 
        */
        public MonthlyDutyScheduleBean InsertItem(MonthlyDutyScheduleBean paramBean)
        {
            paramBean.DutyScheduleItemId = (int)base.Insert(INSERT_DUTY_SCHEDULE_ITEM, paramBean);
            return paramBean;
        }

        /*
         *名称： Update
         *功能： 更新排班项目详细对象。
         *参数： paramBean - 更新对象
         *返回： 更新记录数
         *说明： 排班项目详细 update 
        */
        public int UpdateItem(MonthlyDutyScheduleBean paramBean)
        {
            return base.Update(UPDATE_DUTY_SCHEDULE_ITEM, paramBean);
        }

        /*
         *名称： Delete
         *功能： 删除排班项目详细对象。
         *参数： paramBean - 删除对象
         *返回： 删除记录数
         *说明： 排班项目详细 delete 
        */
        public int DeleteItem(MonthlyDutyScheduleBean paramBean)
        {
            return base.Delete(DELETE_DUTY_SCHEDULE_ITEM, paramBean);
        }

        /*
         *名称： Delete
         *功能： 删除排班项目详细对象。
         *参数： paramBean - 删除对象
         *返回： 删除记录数
         *说明： 排班项目详细 delete 
        */
        public int DeleteItemAll(MonthlyDutyScheduleBean paramBean)
        {
            return base.Delete(DELETE_DUTY_SCHEDULE_ITEM_ALL, paramBean);
        }
        
        // delete schedual transaction
        public void DeleteSchedual(MonthlyDutyScheduleBean paramBean)
        {
            try
            {
                // 开始事务 
                base.BeginTransaction();

                this.Delete(paramBean);
                this.DeleteItemAll(paramBean);

                // 提交事务
                base.CommitTransaction();

            }
            catch (Exception e)
            {
                // 回滚事务                
                base.RollBackTransaction();
                throw e;
            }
        }


        public MonthlyDutyScheduleBean FindItemEmpDayIsExist(MonthlyDutyScheduleBean paramBean)
        {
            return (MonthlyDutyScheduleBean)base.QueryForObject(FIND_ITEM_EMPDAY_ISEXIST, paramBean);
        }


        public IList ListDutyScheduleEmps(MonthlyDutyScheduleBean paramBean)
        {
            return base.QueryForList(LIST_DUTY_SCHEDULE_EMPS, paramBean);
        }

        public IList ListDutyEmpsDays(MonthlyDutyScheduleBean paramBean)
        {
            return base.QueryForList(LIST_DUTY_EMPS_DAYS, paramBean);
        }

        public IList CheckEmpInOtherSchedule(MonthlyDutyScheduleBean paramBean)
        {
            return base.QueryForList(CHECK_EMP_IN_OTHER_SCHEDULE, paramBean);
        }

        public IList FindDutyEmpsDays(MonthlyDutyScheduleBean paramBean)
        {
            return base.QueryForList(LIST_DUTY_EMPS_DAYS2, paramBean);
        }
        
    }
}
